/**
* \file GUIPlugin.h
* \brief GUIPlugin decleration class
* \author Edouard ROGE
* \date 24 Novembre 2013
*/
#ifndef _GUIPLUGIN_
#define _GUIPLUGIN_

#include "Core/Plugin/IPlugin.h"

namespace Core
{
	namespace GUI
	{
		class IGUIContext;

		class IGUIPlugin : public Core::Plugin::IPlugin
		{
		public:

			/**
			 * \fn virtual IGUIContext * CreateContext() const = 0;
			 * \return a newly created GUI context
			 * \brief Create a GUI context
			 */
			virtual IGUIContext * CreateContext() const = 0;

			/**
			 * \fn virtual void DestroyContext(IGUIContext * _pContext) const = 0;
			 * \param _pContext GUI context to destroy
			 * \brief Destroy the context in parameter, created before by this plugin
			 */
			virtual void DestroyContext(IGUIContext * _pContext) const = 0;
		};
	}
}

#endif // _GUIPLUGIN_
